/*
 * @Author: zhangweixin 
 * @Date: 2018-11-23 11:31:11 
 * @Last Modified by: zhangweixin
 * @Last Modified time: 2018-12-04 19:41:48
 */
/*
 * @Author: zhangweixin 
 * @Date: 2018-11-07 16:50:37 
 * @Last Modified by: zhangweixin
 * @Last Modified time: 2018-11-21 17:21:57
 */
const path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
// 热模块替换 可以使用
// 命令行加上 --hot
// 或者如下
// const webpack = require('webpack');

// devServer: {
//     hot: true
// }

// plugins:[
//      new webpack.HotModuleReplacementPlugin()
// ]
// 入口文件 index.js 配置代码
// if (module.hot) {
//   module.hot.accept();
// }


module.exports = {
  entry: {
    app:[
      "babel-polyfill",
        path.join(__dirname, 'src/index.js')
      ],
      vendor: [
        'react', 
        'react-router-dom', 
        'redux', 
        'react-dom', 
        'react-redux',
        'redux-thunk'
      ]
  },
  output: {
    path: path.join(__dirname, './dist'),
    filename: '[name].[chunkhash].js',
    chunkFilename: '[name].[chunkhash].js',
    publicPath: "/"
  },
  module:{
    rules:[
      // {
      //   test:/\.js|jsx$/,
      //   use:[{
      //     loader:"babel-loader",
      //     options:{
      //       cacheDirectory: true,///*cacheDirectory是用来缓存编译结果，下次编译加速*/
      //     }
      //   }],
      //   include:path.join(__dirname,'src'),
      // },
      // babelrc 文件 plugins 不添加 "react-hot-loader/babel",
      // 否则 index.js && template.jsx 中，都要import 同样的包
      // 比如 style 模块化用到的
      // import style from './style.less';
      // import className from 'classnames/bind';
      // const classMap = className.bind(style);
      // 在ctrl +s 后，页面热模块替换后，提示页面classMap未定义
      {
        test:/\.js|jsx$/,
        use:[{
          loader:"babel-loader",
          // options:{
          //   cacheDirectory: true,///*cacheDirectory是用来缓存编译结果，下次编译加速*/
          // }
        }],
        include:path.join(__dirname,'src'),
      },
      {
        // npm install --save-dev url-loader file-loader
        test: /\.(png|jpg|gif)$/,
        use: [{
            loader: 'url-loader',
            options: {
                limit: 8192,
                // options limit 8192意思是，
                // 小于等于8K的图片会被转成base64编码，直接插入HTML中，减少HTTP请求。
            }
        }],
        include:[path.join(__dirname,'src'),path.join(__dirname,'static')],
      }
    ]
  },
  resolve:{
      alias:{
        components:path.join(__dirname,'src/components'),
        pages:path.join(__dirname,'src/pages'),
        router: path.join(__dirname, 'src/router'),
        actions: path.join(__dirname, 'src/actions'),
        constants: path.join(__dirname,'src/constants'),
        reducers: path.join(__dirname,'src/reducers'),
        utils:path.join(__dirname,'src/utils'),
        imgs:path.join(__dirname,'static/imgs'),
        style:path.join(__dirname,'static/style'),
    }
  },
  plugins:[
    new HtmlWebpackPlugin({
      filename:"index.html",
      template: path.join(__dirname,"index.html")
    }),

    new webpack.HashedModuleIdsPlugin(),
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor'
    }),
    new webpack.optimize.CommonsChunkPlugin({
        name: 'runtime'
    })
  ]
}